From: Eli Zaretskii Date: Wed, 19 Oct 2011 11:46:17 +0000 (+0200) Subject: Followup to revision 106131. X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1~1^2~324^2~1912 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=b78fd0259f99cfb73adbf515a4391056a89b7820;p=emacs.git Followup to revision 106131. src/xdisp.c (try_window_reusing_current_matrix): If a line ends in a display vector or the next line starts in a display vector, continue redrawing the window even though the character position of start_row was reached. --- diff --git a/src/ChangeLog b/src/ChangeLog index 8a0337a5d6f..089d69571f2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -2,6 +2,10 @@ * xdisp.c (start_display): If the character at POS is displayed via a display vector, reset IT->current.dpvec_index to zero. + (try_window_reusing_current_matrix): If a line ends in a display + vector or the next line starts in a display vector, continue + redrawing the window even though the character position of + start_row was reached. (Bug#9771, part 2) 2011-10-18 Chong Yidong diff --git a/src/xdisp.c b/src/xdisp.c index 50ddd6b08b8..0757feed1d9 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -16078,13 +16078,20 @@ try_window_reusing_current_matrix (struct window *w) start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix); } - /* If we have reached alignment, - we can copy the rest of the rows. */ - if (IT_CHARPOS (it) == CHARPOS (start)) + /* If we have reached alignment, we can copy the rest of the + rows. */ + if (IT_CHARPOS (it) == CHARPOS (start) + /* Don't accept "alignment" inside a display vector, + since start_row could have started in the middle of + that same display vector (thus their character + positions match), and we have no way of telling if + that is the case. */ + && it.current.dpvec_index < 0) break; if (display_line (&it)) last_text_row = it.glyph_row - 1; + } /* A value of current_y < last_visible_y means that we stopped